package simulaco.web.action;

import gminet.infra.business.BusinessException;
import gminet.infra.db.TransactionException;
import gminet.infra.web.WebException;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import simulaco.business.LoginBusiness;
import simulaco.dto.Usuario;

@ManagedBean(name = "loginAction")
@RequestScoped
public class LoginAction extends WebAction {

    private static final long serialVersionUID = 2793410025683297380L;
    
    private Usuario usuario;

    public LoginAction() {
    }

    public String prepararLogin() {

        // TODO RECUPERA DADOS DE ACESSO DO ARQUIVO DE PROPRIEDADES 
        getUsuario().setEmail(getAccessEmail());
        getUsuario().setSenhaAcesso(getAccessPassword());
        //
        return "loginUsuario";
    }

    public String executarLogin() throws WebException {

        String pageReturn = "";
        try {
            Usuario locaUsuario = LoginBusiness.executeLogin(getUsuario());
            setUsuarioLocal(locaUsuario);
            pageReturn = "iniciaUsuario";
        } catch (BusinessException be) {
            addBusinessException("frmLogin", be);
            pageReturn = "loginUsuario";
        } catch (TransactionException te) {
            throw new WebException(te);
        }
        return pageReturn;
    }

    public String executarLogout() {

        releaseUsuarioLocal();
        releaseSession();
        return "index";
    }

    public Usuario getUsuario() {
        if (this.usuario == null) {
            this.usuario = new Usuario();
        }
        return this.usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

}
